import { reactive, toRefs } from 'vue'
import { defineStore } from 'pinia'
/**
 * @description: 窗口状态管理
 * @param {*}
 * @method
 */

export const useAppUpdater = defineStore('appUpdater', () => {
    const state = reactive({
        nowAppVersion: null, // 当前版本号
        appHaveLastestVersion: false, // 是否是最新版本
        appDownLoadPercent: 0 // 下载进度
    })

    // 监听是否有可更新的版本 （App.vue页面加载完成即执行）
    const queryAvailableVersion = () => {
        // 告诉主进程,我加载好了
        window.api.windowOnLoaded()

        // 获取主进程提供的版本号
        window.electron.ipcRenderer.on('now-app-version', (event, version) => {
            console.log(version, '<<<<<----version')
            state.nowAppVersion = version
        })

        // 监听是否有可更新的版本
        window.electron.ipcRenderer.on('update_available', (event, flag) => {
            console.log('监听是否有可更新的版本', flag)
            state.appHaveLastestVersion = flag
        })

        // 监听下载进度
        window.electron.ipcRenderer.on('download_progress', (event, progress) => {
            console.log('监听是否有可更新的版本', parseFloat(progress.percent).toFixed(2))
            state.appDownLoadPercent = parseFloat(progress.percent).toFixed(2)
        })
    }

    // 点击下载事件
    const downloadApp = () => {
        window.api.downloadApp()
    }

    /* 封装的electron主进程的相关api方法 end */

    return {
        ...toRefs(state),
        queryAvailableVersion, // 监听窗口状态
        downloadApp
    }
})
